//给你一个字符串 title ，它由单个空格连接一个或多个单词组成，每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 ： 
//
// 
// 如果单词的长度为 1 或者 2 ，所有字母变成小写。 
// 否则，将单词首字母大写，剩余字母变成小写。 
// 
//
// 请你返回 大写后 的 title 。 
//
// 
//
// 示例 1： 
//
// 输入：title = "capiTalIze tHe titLe"
//输出："Capitalize The Title"
//解释：
//由于所有单词的长度都至少为 3 ，将每个单词首字母大写，剩余字母变为小写。
// 
//
// 示例 2： 
//
// 输入：title = "First leTTeR of EACH Word"
//输出："First Letter of Each Word"
//解释：
//单词 "of" 长度为 2 ，所以它保持完全小写。
//其他单词长度都至少为 3 ，所以其他单词首字母大写，剩余字母小写。
// 
//
// 示例 3： 
//
// 输入：title = "i lOve leetcode"
//输出："i Love Leetcode"
//解释：
//单词 "i" 长度为 1 ，所以它保留小写。
//其他单词长度都至少为 3 ，所以其他单词首字母大写，剩余字母小写。
// 
//
// 
//
// 提示： 
//
// 
// 1 <= title.length <= 100 
// title 由单个空格隔开的单词组成，且不含有任何前导或后缀空格。 
// 每个单词由大写和小写英文字母组成，且都是 非空 的。 
// 
//
// Related Topics 字符串 👍 30 👎 0


package com.tyrone.leetcode.editor.cn;

public class CapitalizeTheTitle {
    public static void main(String[] args) {
        Solution solution = new CapitalizeTheTitle().new Solution();
        System.out.println(solution.capitalizeTitle("A"));
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        public String capitalizeTitle(String title) {
            boolean flag = true;
            char[] arr = title.toCharArray();
            int n = arr.length;
            if (n <= 2) {
                for (int i = 0; i < n; i++) {
                    arr[i] = arr[i] != ' ' ? Character.toLowerCase(arr[i]) : arr[i];
                }
                return new String(arr);
            }
            int m = 0;
            for (int i = 0; i < n; i++) {
                if (arr[i] != ' ') {
                    if (flag) {
                        arr[i] = Character.toUpperCase(arr[i]);
                        flag = false;
                    } else {
                        arr[i] = Character.toLowerCase(arr[i]);
                    }
                    m++;
                } else {
                    if (m > 0 && m <= 2) {
                        arr[i - m] = Character.toLowerCase(arr[i - m]);
                    }
                    flag = true;
                    m=0;
                }
            }
            if (m > 0 && m <= 2) {
                arr[n - m] = Character.toLowerCase(arr[n - m]);
            }
            return new String(arr);
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}